\chapter{Analýza}
\label{chap:analyza}
Tato kapitola pojednává o analytické části. V této kapitole je zachycena architektura aplikace v jazyce UML\footnote{UML - Unified Modeling Language - grafický jazyk pro objektově orientovanou analýzu software}. Grafická notace je vhodná pro ujasnění detailů fungování systému a pro jeho náhled s odstupem.

\section{Funkční požadavky}
Funkční požadavky definují chování systému a specifikují vymezené cíle funkčnosti softwaru. Na aplikaci Visualizer jsou kladeny tyto funkční požadavky:
\begin{itemize}
\item aplikace podporuje načítání XML souborů
\item aplikace zobrazí načtený XML dokument
\item aplikace podporuje vyhodnocování XPath dotazů
\item aplikace podporuje rozklad XPath dotazu na jeho poddotazy
\item aplikace vyznačí seznam uzlů vybraných vyhodnocením XPath dotazu nebo jeho poddotazu v zobrazeném XML dokumentu
\item aplikace vyznačí XPath dotaz nebo jeho poddotaz ve výrazu zadaném uživatelem
\item aplikace podporuje krokování XPath dotazu
\item aplikace podporuje breakpointy v zobrazeném XML dokumentu
\item aplikace podporuje načítání konfiguračních souborů
\end{itemize}

\section{Nefunkční požadavky}
Nefunčkní požadavky definují omezující vlastnosti systému. Tyto požadavky většinou vyplívají z prostředí, ve kterém bude aplikace nasazená. Pro implementaci aplikace Visualizer byly stanoveny tyto nefunkční požadavky:
\begin{itemize}
\item aplikace je psaná v prostředí .NET
\item aplikace je naprogramovaná programovacím jazykem C\#
\item aplikace používá WPF technologii
\item aplikace podporuje pluginy
\end{itemize}

\section{Use-Case diagram}
Use-Case diagramy poskytují rychlou představu o funkčnostech systému. Diagram použití v podstatě znázorňuje funkční požadavky na aplikaci. Přiložený diagram \ref{fig:use-case} zachycuje požadavky na aplikaci Visualizer z pohledu uživatele.

\begin{figure}[h]
\begin{center}
\includegraphics[width=13cm]{figures/use-case.png}
\caption{Use-Case diagram zachycující požadavky uživatele}
\label{fig:use-case}
\end{center}
\end{figure}

\clearpage
\section{Diagram komponent}
Diagram komponent znázorňuje softwarové komponenty použité v systému. Komponenta je fyzická nahraditelná část systému, která obaluje implementaci a poskytuje realizaci množiny specifikovaných rozhraní. Aplikace Visualizer se skládá ze tří komponent uvedených na~obrázku \ref{fig:component}.

\begin{figure}[h]
\begin{center}
\includegraphics[width=10cm]{figures/component-view.png}
\caption{Diagram komponent aplikace Visualizer}
\label{fig:component}
\end{center}
\end{figure}

Z obrázku \ref{fig:component} lze vyčíst, že se aplikace Visualizer skládá ze tří komponent Core, Plugins a XPathPlugin. Tímto rozvržením bylo možné oddělit uživatelské rozhraní od implementace interpretu jazyka XPath.

\subsection{Core}
Část Core je zkompilována do .exe souboru a je základním stavebním kamenem aplikace. Tato jednotka zobrazuje hlavní okno, načítá a spravuje pluginy a v neposlední řadě zpracovává a~vytváří události. Důležitou vlastností je implementace interfacu ICore.

\subsection{Plugins}
Část Plugins je zkompilována do .dll souboru a hraje roli prostředníka mezi částí Core a~pluginy jí načítané. V této části jsou definovány rozhraní ICore a IPlugin. Dodatečně byly do této jednotky přidány prvky modelující střední část okna, tedy místa kam se zobrazí načtený XML dokument.

\noindent
\emph{Pro tvorbu vlastního pluginu je nezbytné implementovat interface IPlugin.}

\subsection{XPathPlugin}
Část XPathPlugin je zkompilována do .dll souboru a představuje implementci zadání této bakalářské práce. XPathPlugin implementuje interface IPlugin a je tedy možné jej jako plugin načíst do aplikace.

\clearpage
\section{Diagram nasazení}
Diagram nasazení popisuje vztah softwarového díla k cílené architektuře a rozmístění zdrojů.

\begin{figure}[h]
\begin{center}
\includegraphics[width=12cm]{figures/deployment-view.png}
\caption{Diagram nasazení aplikace Visualizer}
\label{fig:deployment}
\end{center}
\end{figure}

Z diagramu \ref{fig:deployment} je možné vyčíst, že aplikace Visualizer ke svému korektnímu chodu vyžaduje systém Windows s nainstalovaným prostředím .NET~Framework 3.5 